Skip to content

dgb: wire AutoRatchet mint baseline base_version=35 (oracle-resolved) [HOLD/surface-for-tap] - #293

Merged
frstrtr merged 1 commit into
masterfrom
dgb/auto-ratchet-wire-base35
Jun 21, 2026
Merged

dgb: wire AutoRatchet mint baseline base_version=35 (oracle-resolved) [HOLD/surface-for-tap]#293
frstrtr merged 1 commit into
masterfrom
dgb/auto-ratchet-wire-base35

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 21, 2026

Copy link
Copy Markdown
Owner

DGB Phase B — AutoRatchet mint baseline wire-in (base_version=35)

Closes the [decision-needed] that held #292: DGB's VOTING-state baseline share version.

Resolved against the oracle frstrtr/p2pool-dgb-scrypt @22761e7 (2026-06-17):

  • data.py:636Share.VERSION=35, VOTING_VERSION=35, SUCCESSOR=None, share_versions={35:Share}
  • networks/digibyte.py:26SEGWIT_ACTIVATION_VERSION=35

SUCCESSOR=None ⇒ 35 is the format the live node currently mints ⇒ base_version=35 is unambiguous. The "older than LTC" axis is the P2P protocol version (p2p.py VERSION=3501 vs LTC 3503), not the share version.

What this does

Review posture

  • Surface-for-tap — consensus-bearing (version-gate transition). NOT auto-merge. HOLD for operator tap + testbed crossing run.
  • Stacked on dgb: AutoRatchet mint-side share-version ratchet (Phase B pool/share) #292 (dgb/auto-ratchet-mint) which supplies auto_ratchet.hpp; this is the SEPARATE wire-in PR integrator requested. Touches src/impl/dgb/ only.
  • Bucket-2 (v36-native shared structure); ltc-doge canonical owner of the ratchet shape — cc'd.

The DGB VOTING-state baseline share version was a [decision-needed] held on
PR #292. Resolved against the canonical oracle frstrtr/p2pool-dgb-scrypt
@22761e7 (2026-06-17): data.py:636 Share.VERSION=35, VOTING_VERSION=35,
SUCCESSOR=None, share_versions={35:Share}; networks/digibyte.py:26
SEGWIT_ACTIVATION_VERSION=35. SUCCESSOR=None means 35 is the format the live
node currently mints, so base_version=35 is unambiguous. The "older than LTC"
divergence is the P2P PROTOCOL version (p2p.py VERSION=3501 vs LTC 3503), not
the share version.

New fenced header auto_ratchet_wire.hpp is the single production location of
the baseline constant: make_dgb_ratchet() constructs AutoRatchet(target=36,
base=35) and dgb_select_mint_versions() is the run-loop selector. The
work-weighted tail guard already inside get_share_version keeps mint
activation subordinate to the 60%-by-work accept gate (#249/#289) -- this
seam adds no new policy. base_version stays an explicit constructor param so
the v37 unified shape is clean.

De-staled the [decision-needed] notes in auto_ratchet.hpp and share_test.cpp.
+2 KATs pin the wired constant and bootstrap mint=35/vote=36; dgb_share_test
22/22 green. Surface-for-tap (consensus-bearing version-gate flip), HOLD.
@frstrtr
frstrtr changed the base branch from dgb/auto-ratchet-mint to master June 21, 2026 11:16
@frstrtr
frstrtr merged commit fa2c10f into master Jun 21, 2026
20 checks passed
frstrtr added a commit that referenced this pull request Jun 23, 2026
…#293)

The DGB VOTING-state baseline share version was a [decision-needed] held on
PR #292. Resolved against the canonical oracle frstrtr/p2pool-dgb-scrypt
@22761e7 (2026-06-17): data.py:636 Share.VERSION=35, VOTING_VERSION=35,
SUCCESSOR=None, share_versions={35:Share}; networks/digibyte.py:26
SEGWIT_ACTIVATION_VERSION=35. SUCCESSOR=None means 35 is the format the live
node currently mints, so base_version=35 is unambiguous. The "older than LTC"
divergence is the P2P PROTOCOL version (p2p.py VERSION=3501 vs LTC 3503), not
the share version.

New fenced header auto_ratchet_wire.hpp is the single production location of
the baseline constant: make_dgb_ratchet() constructs AutoRatchet(target=36,
base=35) and dgb_select_mint_versions() is the run-loop selector. The
work-weighted tail guard already inside get_share_version keeps mint
activation subordinate to the 60%-by-work accept gate (#249/#289) -- this
seam adds no new policy. base_version stays an explicit constructor param so
the v37 unified shape is clean.

De-staled the [decision-needed] notes in auto_ratchet.hpp and share_test.cpp.
+2 KATs pin the wired constant and bootstrap mint=35/vote=36; dgb_share_test
22/22 green. Surface-for-tap (consensus-bearing version-gate flip), HOLD.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
frstrtr added a commit that referenced this pull request Jun 23, 2026
…mer seam

Re-lands the #294 mint_local_share_with_ratchet helper, which was lost from
master in the #292/#293/#294 stacked squash-merge (no #294 merge commit reaches
origin/master; the primitives dgb_select_mint_versions + create_local_share
survive). This is the consumer adapter DGBWorkSource::MintShareFn binds to
(work_source.hpp:197): on a ShareAccept submission it parses the 80-byte
reconstructed header, asks the live AutoRatchet for the {mint, vote} version
pair, and inserts the share via create_local_share, returning the minted hash
(NULL on a malformed header / fail-closed).

Authored against master createlocal_share signature (authoritative). Duck-typed
on the inputs so the header does not pull the stratum work_source TU in. Pure
adapter: tracker-insertion thread-safety is the caller bind point concern.

KAT (dgb_share_test, no new exe): 80-byte header parse round-trip, short-buffer
fail-closed, and adapter fail-closed + template instantiation drift-guard
against create_local_share. 25/25 green.
frstrtr added a commit that referenced this pull request Jun 25, 2026
…ng coins (#496)

rest_version_signaling() gated on a hardcoded {LITECOIN,DOGECOIN} allowlist,
returning an empty object for every other coin. But BTC/DGB/BCH are also
v36-ratcheting (each wires core::version_gate / AutoRatchet: #440 BTC, #293 DGB,
#255 BCH). On those nodes the dashboard crossing banner was suppressed entirely,
so an operator could not see the V35->V36 cross — a charter #3 blind spot
(operators must see the ratchet truthfully, cross-coin).

Invert the guard to exclude only static-version coins (Dash = v16), which
genuinely have no pending transition. Coins whose sharechain stats carry no
vote data fall through to the existing empty-result path below, so the banner
stays hidden until there is real crossing state — no false banners. Web-only,
non-consensus.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant